// pages/chat/chat.js
const app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    InputBottom: 0,
    content: '',
    chatLogs: [],
    user_id: 5
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 获取聊天记录
    const chatLogs = wx.getStorageSync('chatLogs') || []
    this.setData({
      chatLogs: chatLogs,
      user_id: app.globalData.user_id
    })
    // 建立链接
    wx.connectSocket({
      url: 'ws://192.168.2.165:8035/chat-channel/',
      // header: {
      //   'content-type': 'application/json',
      //   'Authorization': 'JWT ' + wx.getStorageSync('token') || ''
      // },
    })
    wx.onSocketOpen((result) => {
      console.log('链接成功', result)
      const user_id = this.data.user_id
      let sendMsg = {
        code: '101',
        user_id: user_id,
      }
      // 发送数据
      wx.sendSocketMessage({
        data: JSON.stringify(sendMsg),
      })
    })
    wx.onSocketError((result) => {
      console.log('链接失败', result)
    })
    wx.onSocketClose((result) => {
      console.log('链接关闭', result)
    })
  },

  sendTap() {
    const { content, user_id } = this.data
    if (content === '') {
      wx.showToast({
        title: '请输入发送内容',
        icon: 'none'
      })
    }
    let sendMsg = {
      code: '100',
      user_id: user_id,
      content: content
    }
    // 发送数据
    wx.sendSocketMessage({
      data: JSON.stringify(sendMsg),
    })
    this.setData({
      content:''
    })
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    // 滚动到最底部
    wx.createSelectorQuery().select('.bottom').boundingClientRect(function (rect) {
      // 使页面滚动到底部
      wx.pageScrollTo({
        scrollTop: rect.bottom
      })
    }).exec()
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // 接受数据
    const chatLogs = this.data.chatLogs
    wx.onSocketMessage((res) => {
      let message = JSON.parse(res.data)
      chatLogs.push(message)
      wx.setStorageSync('chatLogs', chatLogs)
      this.setData({
        chatLogs: chatLogs
      })
      wx.pageScrollTo({
        scrollTop: -10
      })
    })
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
    console.log('------onHide----')

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    // 离开房间
    console.log('------ 离开房间-----')
    let sendMsg = {
      code: '888',
      user_id: this.data.user_id,
    }
    wx.sendSocketMessage({
      data: JSON.stringify(sendMsg),
    })
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },
  // 输入框操作
  InputFocus(e) {
    this.setData({
      InputBottom: e.detail.height
    })

  },
  InputBlur(e) {
    this.setData({
      InputBottom: 0
    })
  },
  messageInput(e) {
    this.setData({
      content: e.detail.value
    })
  }

})